using System.ComponentModel.DataAnnotations.Schema;
using System.Data.Entity.ModelConfiguration;

namespace teste.Models.Mapping
{
    public class VEICULOMap : EntityTypeConfiguration<VEICULO>
    {
        public VEICULOMap()
        {
            // Primary Key
            this.HasKey(t => t.Id);

            // Properties
            this.Property(t => t.Cor)
                .IsRequired()
                .HasMaxLength(30);

            this.Property(t => t.PlacaDoVeiculo)
                .IsRequired()
                .HasMaxLength(10);

            // Table & Column Mappings
            this.ToTable("VEICULO");
            this.Property(t => t.Id).HasColumnName("Id");
            this.Property(t => t.Codigo).HasColumnName("Codigo");
            this.Property(t => t.Cor).HasColumnName("Cor");
            this.Property(t => t.Ano).HasColumnName("Ano");
            this.Property(t => t.PlacaDoVeiculo).HasColumnName("PlacaDoVeiculo");
            this.Property(t => t.TipoDeVeiculo_Id).HasColumnName("TipoDeVeiculo_Id");
            this.Property(t => t.Marca_Id).HasColumnName("Marca_Id");
            this.Property(t => t.Cliente_Id).HasColumnName("Cliente_Id");

            // Relationships
            this.HasOptional(t => t.CLIENTE)
                .WithMany(t => t.VEICULOes)
                .HasForeignKey(d => d.Cliente_Id);
            this.HasOptional(t => t.MARCA)
                .WithMany(t => t.VEICULOes)
                .HasForeignKey(d => d.Marca_Id);
            this.HasOptional(t => t.TIPODEVEICULO)
                .WithMany(t => t.VEICULOes)
                .HasForeignKey(d => d.TipoDeVeiculo_Id);

        }
    }
}
